package services;

import java.util.Collection;

import javax.transaction.Transactional;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.Assert;

import repositories.MensajeComunidadRepository;
import domain.Administrador;
import domain.MensajeComunidad;
import domain.Vecino;

@Service
@Transactional
public class MensajeComunidadService {
	@Autowired
	private MensajeComunidadRepository mensajeComunidadRepository;

	@Autowired
	private AdministradorService administradorService;

	@Autowired
	private VecinoService vecinoService;

	public MensajeComunidadService() {
		super();
	}

	public MensajeComunidad create() {
		MensajeComunidad res;
		Administrador principal;

		principal = administradorService.findByPrincipal();
		res = new MensajeComunidad();

		res.setAdministrador(principal);
		return res;
	}

	public void save(MensajeComunidad mensajeComunidad) {
		Administrador principal;
		Assert.notNull(mensajeComunidad.getComunidadDeVecinos());
		principal = administradorService.findByPrincipal();
		Assert.notNull(mensajeComunidad);
		Assert.isTrue(!mensajeComunidad.getAsunto().isEmpty());
		Assert.isTrue(!mensajeComunidad.getContenido().isEmpty());
		Assert.isTrue(mensajeComunidad.getAdministrador().equals(principal));
		mensajeComunidadRepository.save(mensajeComunidad);
	}
	
	public void delete(MensajeComunidad mc){
		Assert.notNull(mc);
		mensajeComunidadRepository.delete(mc);
	}

	public Collection<MensajeComunidad> findByAdministrador() {
		Collection<MensajeComunidad> res;
		Administrador principal;
		principal = administradorService.findByPrincipal();
		Assert.isTrue(principal instanceof Administrador);
		res = mensajeComunidadRepository.findByAdministrador(principal.getId());
		return res;
	}

	public Collection<MensajeComunidad> findByComunidades() {
		Collection<MensajeComunidad> res;
		Vecino principal;
		principal = vecinoService.findByPrincipal();
		Assert.isTrue(principal instanceof Vecino);
		res = mensajeComunidadRepository.findByComunidad(principal.getId());
		return res;
	}
}
